X68000Z上でIOCSコールを利用した音楽プログラムを動かした。
プログラマーのためのX68000環境ハンドブック – Programmers x68000 Environment handbook.PDF (archive.org)
453ページのOPMをIOCSをコールして動かすプログラムがX68000Z上で動いたのでメモっておく。
これで自作音源ドライバの作成に一歩近づいた・・・!
コンパイル環境
xdev68kを利用。
yosshin4004/xdev68k: Cross development environment for the SHARP X68K. (github.com)
makefileにはソースコード名を書く場所があるけど、
- C言語の名前を削除
- 今回のソースコードをアセンブラ枠に記入
で問題なくコンパイルできることを確認。
ソースコード
lea initdata(PC),A1
loop
move.b (A1)+,D1
beq play
move.b (A1)+,D2
moveq #$68,D0
trap #15
bra loop
play
lea musicdata(PC),A1
nextnote
move.b (A1)+,D3 *D3=音程
beq musstop
move.b (A1)+,D4
moveq #$68, D0
move.b #$28, D1
move.b D3, D2
trap #15
moveq #$68, D0
move.b #8, D1
move.b #%1111_000, D2
trap #15
move.l #20000,D0
wait2
subq.l #1,D0
bne wait2
moveq #$68, D0
move.b #8, D1
move.b #%0000_000,D2
trap #15
ext.w D4
mulu #10000,D4
wait
subq.l #1,D4
bne wait
bra nextnote
musstop
dc.w $FF00
initdata
dc.b $20,%11_000_100
dc.b $40,%010_1000
dc.b $48,%000_0100
dc.b $50,%110_1000
dc.b $58,%000_0100
dc.b $60,31
dc.b $68,31
dc.b $70,0
dc.b $78,0
dc.b $80,31
dc.b $80,31
dc.b $90,31
dc.b $98,31
dc.b $A0,7
dc.b $A8,7
dc.b $B0,3
dc.b $B8,3
dc.b $C0,1
dc.b $C8,1
dc.b $D0,3
dc.b $D8,3
dc.b $E0,10*16+3
dc.b $E8,10*16+3
dc.b $F0,5*16+3
dc.b $F8,5*16+3
dc.b 0
musicdata
dc.b $41,20
dc.b $3C,20
dc.b $3E,20
dc.b $35,60
dc.b $35,20
dc.b $3E,20
dc.b $41,20
dc.b $3C,60
dc.b $0
